package textparse

import (
	"fmt"
	"regexp"
	"strings"
)

func Main() {
	text := `
8.使用快速排序算法对含N个元素的数组M进行排序，若第一趟排序将除枢轴外的N-1个元素划分为P和Q两个部
分，则下列叙述中，正确的是
A.P和Q块间有序 B.P和Q均块内有序
C.P和Q的元素个数大致相等 D.P和Q中均不存在相等的元素
9.大根堆初始序列为：28，22，20，19，8，12，15，5，对该堆进行两次删除操作后，得到的新堆是
A.20，19，15，12，8，5 B.20，19，15，5，8，12
C.20，19，12，15，8，5 D.20，19，8，12，15，5
10.对如下三个升序序列：{3,5}、{7,9}、{6}，进行二路归并排序，关键字的比较次数是
A.3 B.4 C.5 D.6
`
	// 正则表达式匹配题目编号和随后的文本
	pattern, err := regexp.Compile(`(\d+\..+?)(?=\n\d+\.|\z)`)
	if err != nil {
		fmt.Println("正则表达式错误:", err)
		return
	}
	matches := pattern.FindAllString(text, -1)

	// 处理每个问题
	for i, match := range matches {
		// 题目和选项之间的分割点是选项列表的开始
		// 我们假设选项列表的开始是在匹配到的字符串中第一次出现"A."的位置
		optionsIndex := strings.Index(match, "A.")
		if optionsIndex == -1 {
			fmt.Printf("列表 %d: 无法找到选项的开始\n", i)
			continue
		}

		// 提取题目文本和选项
		questionText := match[:optionsIndex]
		options := match[optionsIndex:]

		// 打印题目和选项
		fmt.Printf("列表 %d: %s\n", i, questionText)
		fmt.Println("选项:", options)
	}
}
